The present invention pertains generally to variable impedance output drivers in integrated circuits, and more particularly to a binary weighted thermometer code for controlling the output impedance of integrated circuit output drivers due to variations in manufacturing process, voltage, and temperature.
Integrated circuits are commonly packaged as chips. An integrated circuit within a chip communicates with the world outside the chip through metalization layers on the outside of the chip known as signal pads. In order for an integrated circuit within the chip package to send signals outside of the chip, xe2x80x9cdriver circuitsxe2x80x9d drive signals onto the signal pads on the exterior of the chip. The signal pads of various chips are connected together by transmission lines known as signal traces, thereby allowing communications between different chips.
The signal pads on a chip are connected to the packaging of the chip (e.g., a pin) which is then connected to a signal trace on a printed circuit board which runs to another integrated circuit chip or electronic device. The electrical connection of the signal pad through the packaging of the chip to the signal trace is characterized by parasitic resistance, inductance, and capacitance which interferes with the transmission of the signal from the signal pad. The transmission line characteristics of the printed circuit board signal trace itself, including parasitic resistance, capacitance, and inductance, also interfere with the quality of the transmission of the signal from the signal pad. All of the foregoing add to the load impedance which must be driven by the output driver circuit.
Due to the parasitic resistance, capacitance, and inductance which is present on chip-to-chip signal interconnections, the driver circuits that drive those signal interconnections are preferably designed to avoid excessive voltage swings when switching occurs (particularly for high speed or low power I/O). Excessive voltage swings are known as ringing. Ringing must be avoided while still switching as fast as possible to meet the high speed performance requirements of modern integrated circuits.
As known by those skilled in the art, it is important to match the output impedance of a given signal driver to the characteristic impedance of the transmission line it drives in order to avoid signal reflections due to voltage level switching on the pad, and therefore undesirable signal degradation.
Matching the impedance of an output driver to the characteristic impedance of the signal transmission line is problematic for several reasons. First, process variations inherent in the manufacturing process of integrated circuits, such as the transistor implanting doping level, the effective length of channels in the field effect transistors (FETs), the thickness of the gate oxide for transistors, and the diffusion resistance, can cause the output impedance of two supposedly identical circuits to differ. In particular, variations in any or all of the above process parameters can cause different integrated circuits intended to perform the same function to be classified as xe2x80x9cslowxe2x80x9d, xe2x80x9cnominalxe2x80x9d, or xe2x80x9cfastxe2x80x9d. In other words, two supposedly identical integrated circuits can vary in any or all of the process parameters. As these parameters approach the fast case, the resistance of many components within a chip is decreased. In the opposite extreme, as the process parameters stray further and further from the ideal case, the performance of the chip is degraded, specifically, the resistance of the many components within the chip is increased. This situation is referred to as the xe2x80x9cslowxe2x80x9d case.
In addition, variations in voltage and temperature can cause variations in the output impedance of a given chip. Specifically, the driver output impedance can vary significantly between variations in the operating voltage even within a small operating voltage tolerance range. In another example, when the temperature of an integrated circuit approaches its maximum operating temperature, the resistance of the integrated circuit components increases.
In view of the above, variable impedance output drivers have been developed to allow adjustment of the driver output impedance due to variations in manufacturing process, voltage, and temperature.
One prior art technique for accomplishing impedance matching of output pads for integrated circuits is described in U.S. Pat. No. 6,118,310 to Esch, Jr. and assigned to the same assignee of interest, entitled xe2x80x9cDigitally Controlled Output Driver and Method for Impedance Matchingxe2x80x9d, herein incorporated by reference for all that it teaches. In the technique described therein, output driver impedance matching is accomplished by programmably enabling a combination of FETs arranged in parallel whose combined impedance closely matches the characteristic impedance of the transmission line.
Such prior art variable impedance output drivers typically use a pure thermometer code for the PVT impedance matching control in order to limit the change in output impedance when the PVT control code is updated. In particular, the impedance networks implement a xe2x80x9cthermometerxe2x80x9d code whereby when an nth-order signal Wn is activated (set to xe2x80x9c1xe2x80x9d) all of the lower-order signals W1 to Wnxe2x88x921 are also activated. In a pure thermometer code impedance matching circuit, a first FET leg is activated and then each subsequent FET leg is activated until the desired output impedance is achieved. Accordingly, at least one leg is always activated to ensure that during the switching of FET legs on or off, the FET legs are never switched from all off to all on or vice versa, which would result in a spike in the output impedance. Table 1 illustrates a pure 11-bit thermometer code, wherein each bit 0::10 in the code word W represents an incremental admittance step of 10%.
In illustrated in the example thermometer code of TABLE 1, the controllable range of sensitivity of output impedance is limited to between 1 and 0.526, wherein the admittance is changed by 0.1 or 10% for each step. As also illustrated by TABLE 1, a pure thermometer code requires one bit for each step. Accordingly, one of the drawbacks of a pure thermometer code is the large number of bits (and therefore control lines) required to allow a large range of output impedance. The number of control lines increases exponentially as the degree of required step sensitivity increases. For example, if it would be desirable to step the admittance only 1% in order to increase the sensitivity of each step, the PVT control circuit would require 101 control lines, or tenfold the number of lines required for adjusting it to the nearest 10%. Alternatively, if it were desired to increase the range of adjustable output impedance from 1 to 0.25, in the example of TABLE 1 with each step changing the admittance by 10%, an additional twenty bits (control lines) would be required.
Accordingly, although an increased sensitivity range for adjusting the PVT output impedance is desirable, the number of bits required to implement any significant range of sensitivity using a pure thermometer code is outweighed by the added design complexity and chip real estate required to implement it.
An alternative solution to the problems inherent with a pure thermometer code is the use of a pure binary weighted code whereby each leg of the PVT control circuit comprises a resistive device having an admittance corresponding to a combination of its binary weighted bit position. In other words, each leg has an admittance of 2(bit position)Y, where Y is a predefined minimum admittance appropriate to the design. In accordance with the binary weighted code, if bit 0 of the calibration word controls a FET with admittance Y, bit 1 of the calibration word controls a FET with admittance 2*Y, bit 2 of the calibration word controls a FET with admittance 4*Y, and so on. In effect, as the calibration word binary count increments, more resistors are added in parallel in the driver FET array, and the output impedance ZOUT drops. TABLE 2 illustrates an example binary weighted code.
As illustrated in TABLE 2, the benefit of using a binary weighted code is its ability to achieve a larger range of output impedance using fewer bits (or PVT control lines). However, in a pure binary weighted code, a step-wise increment does not ensure that all legs currently activated will remain activated at the next step. For example, suppose the current binary weighted calibration code is a binary 1110 (corresponding to an admittance of 0.7) and the code is to be incremented to binary 0001 (corresponding to an admittance value of 0.8). When the electrical connections are switched from 1110 to 0001, it is possible that for a very short time the switches may be in a state such that all the FETs will be off or all the FETs will be on (corresponding to a PVT code of 1111 or 0000 respectively). This can result in an undesirable spike in the output impedance seen on the signal pad. (In this example and according to TABLE 2, the output impedance could momentarily change from ZOUT=1.429 (corresponding to an admittance of 0.7) to ZOUT=0.667 (corresponding to an admittance of 1.5 (all 1s), or from ZOUT=1.429 (corresponding to an admittance of 0.7) to ZOUT=infinite (corresponding to an admittance of 1.5) (all 0s).
Accordingly, a need exists for a PVT control encoding technique that allows for a higher output impedance range with fewer control lines, while preventing spikes in the output impedance on the signal pads.
The present invention is a novel variable impedance output driver control circuit and method for programming the same that employs a binary weighted thermometer code when adjusting the output impedance of an output driver to take into account variations in process, voltage, and temperature across functionally identical chips. The coding scheme of the invention achieves a high range of sensitivity with a minimal number of PVT control lines while preventing spikes in the output impedance on the signal pad.
In accordance with one embodiment of the invention, a binary weighted thermometer code is employed in a variable impedance output driver control circuit to variably adjust the output impedance of an output driver circuit. The variable impedance output driver control circuit is configured with a plurality of resistive devices each programmably electrically connectable in parallel between a first voltage source and the signal pad. The plurality of resistive devices are partitioned into a plurality of sets whereby a first set of the resistive devices may be programmed in a binary incremental manner to electrically connect one or more of the resistive devices in the first set between the first voltage source and the signal pad. Only after all of the resistive devices in the first set have been electrically connected between the first voltage source and the signal pad may a second set of the resistive devices be programmed in a binary incremental manner to electrically connect one or more of the resistive devices in the second set between the first voltage source and the signal pad. Additional sets of the resistive devices may be likewise programmed whereby only after all of the resistive devices in the previously programmed sets have been electrically connected between the first voltage source and the signal pad may an additional set of the resistive devices be programmed in a binary incremental manner to electrically connect one or more of the resistive devices in the additional set between the first voltage source and the signal pad. Preferably, at least one of the resistive devices is electrically connected between the first voltage source and signal pad at all times to prevent an output impedance spike on the signal pad. Additionally, each respective set of the resistive devices preferably implements a pure binary weighted code to increase the output impedance range within the respective set.
In accordance with another embodiment of the invention, a control circuit for a variable impedance output driver circuit includes a first set of resistive devices programmably electrically connectable between a first voltage source and the signal pad, a second set of resistive devices programmably electrically connectable between the first voltage source and the signal pad, and a controller which programs in a binary incremental manner electrical connection of the first set of said resistive devices between the first voltage source and signal pad and which programs in a binary incremental manner electrical connection of the second set of resistive devices between the first voltage source and signal pad only when all of the resistive devices in the first set are electrically connected between the first voltage source and signal pad. The control circuit may include one or more additional sets of resistive devices programmably electrically connectable between the first voltage source and signal pad, whereby the controller programs in a binary incremental manner electrical connection of each of the additional sets of resistive devices between the first voltage source and signal pad only when all of the resistive devices in all of the previously programmed sets are electrically connected between the first voltage source and signal pad. The control circuit preferably includes at least one resistive device electrically connected between the first voltage source and signal pad at all times. In the preferred embodiment, the resistive devices are implemented with field effect transistors (FETs) and each set of resistive devices implements a resistive binary weighted code.